<?php
     /**************************************************************************************
     * Bookswapp is a web application which allow students to exchange their textbooks
     * It is developed by students of ITE "C. Colamonico" - Sistemi Informativi Aziendali
     * Acquaviva delle Fonti (BA) - Italy
     *
     * Bookswapp is free software; you can redistribute it and/or modify it under
     * the terms of the GNU Affero General Public License version 3 as published by the
     * Free Software Foundation
     *
     * Bookswapp is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
     * details.
     *
     * You should have received a copy of the GNU Affero General Public License along 
     * with this program; if not, see http://www.gnu.org/licenses or write to the Free
     * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
     * 02110-1301 USA.
     *
     * You can contact ITE "C. Colamonico" with a mailing address at Via Colamonico, 5 
     * 70021 - Acquaviva delle Fonti (BA) Italy, or at email address bookswapp@itccolamonico.it.
     *
     * The interactive user interfaces in original and modified versions
     * of this program must display Appropriate Legal Notices, as required under
     * Section 5 of the GNU Affero General Public License version 3.
     *
     * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
     * these Appropriate Legal Notices must retain the display of the Bookswapp
     * logo and ITE "C. Colamonico" copyright notice. If the display of the logo is not reasonably
     * feasible for technical reasons, the Appropriate Legal Notices must display the words
     * "Copyright ITE C. Colamonico - http://www.itccolamonico.it - 2014. All rights reserved".
     ****************************************************************************************/
?>
<?php

class SwapController extends GxController {

        /**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

        /**
         * @return array action filters
         */
        public function filters() {
                return array(
                                'accessControl', 
                                );
        }

        /**
         * Specifies the access control rules.
         * This method is used by the 'accessControl' filter.
         * @return array access control rules
         */
        public function accessRules() {
                return array(
                                array('allow',  // allow all users to perform 'index' and 'view' actions
                                        'actions'=>array('index','view'),
                                        'users'=>array('*'),
                                        ),
                                array('allow', // allow authenticated user to perform 'create' and 'update' actions
                                        'actions'=>array('minicreate', 'create','update'), 
                                        'users'=>array('@'),
                                        ),
                                array('allow', // allow admin user to perform 'admin' and 'delete' actions
                                        'actions'=>array('admin','delete'),
                                        'users'=>array('admin'),
                                        ),
                                array('deny', // deny all users
                                        'users'=>array('*'),
                                        ),
                                );
        }

        /**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id) {
		$this->render('view', array(
			'model' => $this->loadModel($id, 'Swap'),
		));
	}

        /**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate() {
		$model = new Swap;

		$this->performAjaxValidation($model, 'swap-form');

		if (isset($_POST['Swap'])) {
			$model->setAttributes($_POST['Swap']);

			if ($model->save()) {
				if (Yii::app()->getRequest()->getIsAjaxRequest()) {
					Yii::app()->end();
				} else {
					$this->redirect(array('view', 'id' => $model->id_swap));
                                }        
			}
		}

		$this->render('create', array( 'model' => $model));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */        
	public function actionUpdate($id) {
		$model = $this->loadModel($id, 'Swap');

		$this->performAjaxValidation($model, 'swap-form');

		if (isset($_POST['Swap'])) {
			$model->setAttributes($_POST['Swap']);

			if ($model->save()) {
				$this->redirect(array('view', 'id' => $model->id_swap));
			}
		}

		$this->render('update', array(
				'model' => $model,
				));
	}

        /**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id) {
		if (Yii::app()->getRequest()->getIsPostRequest()) {
			$this->loadModel($id, 'Swap')->delete();

			if (!Yii::app()->getRequest()->getIsAjaxRequest()) {
				$this->redirect(array('admin'));
                        }        
		} else {
			throw new CHttpException(400, Yii::t('app', 'Your request is invalid.'));
                }        
	}

        /**
	 * Lists all models.
	 */
	public function actionIndex() {
		$dataProvider = new CActiveDataProvider('Swap');
		$this->render('index', array(
			'dataProvider' => $dataProvider,
		));
	}

        /**
	 * Manages all models.
	 */
	public function actionAdmin() {
		$model = new Swap('search');
		$model->unsetAttributes();

		if (isset($_GET['Swap'])) {
			$model->setAttributes($_GET['Swap']);
                }
                
		$this->render('admin', array(
			'model' => $model,
		));
	}

}